package juego.usuariosGuardados;

import java.util.ArrayList;
import java.util.List;
import java.util.Collections;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class UsuariosGuardados {
	
	 private List<Usuario> usuarios = new ArrayList<Usuario>();
	
	 public UsuariosGuardados (){}

	/* Setea la lista de usuarios por la lista pasada por parametro. */
	@XmlElement (name = "usuario")
	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
	
	/* Devuelve la lista de usuarios. */
	public List<Usuario> getUsuarios(){
		return this.usuarios;
	}
	
	/* Agrega el usuario pasado por parametro a la lista. 
	 * Lo ubica en la posicion correspondiente en la lista
	 * manteniendo el orden de mayor a menor puntaje. */
	public void agregarUsuario(Usuario usuario){
		this.usuarios.add(usuario);
		Collections.sort(this.usuarios, Collections.reverseOrder());
	}
        
        public boolean usuarioEstaEnUsuariosGuardados(Usuario usuario){
            if (usuario == null) return false;
            
            List<Usuario> usuarios = this.getUsuarios();
            for(int i = 0; i < usuarios.size(); i++){
                String nombre = usuarios.get(i).getNickname();
                if(nombre.equals(usuario.getNickname())){
                    return true;
                }
            }
            return false;
        }
        
       public Usuario getUsuarioConNombre(String nombre) {
        List<Usuario> usuarios = this.getUsuarios();
        
        for (int indice = 0; indice < usuarios.size(); indice++) {
            String nombreUsuarioActual = (usuarios.get(indice)).getNickname();
            
            if(nombre.equals(nombreUsuarioActual)) {
            	return usuarios.get(indice);
            }
        }
        
        return null;
    }

    public boolean usuarioEstaEnUsuariosGuardados(String nombreJugador) {
       Usuario usuario  = this.getUsuarioConNombre(nombreJugador);
       return this.usuarioEstaEnUsuariosGuardados(usuario);
    }
  
}
